package com.atguigu.bigdata.scala.chapter07

object Scala10_Collection_Method_2 {

    def main(args: Array[String]): Unit = {

        // TODO 集合 - 常用方法
        // 集合之间的方法
        val list1 = List(1,2,3,4)
        val list2 = List(3,4,5,6)

        // 并集（合并两个集合）
        // 数据集的并集操作 = List(1, 2, 3, 4, 3, 4, 5, 6)
        println("数据集的并集操作 = " + list1.union(list2))
        // 数据集的交集操作 = List(3, 4)
        println("数据集的交集操作 = " + list1.intersect(list2))
        // 数据集的差集操作 = List(1, 2)
        println("数据集的差集操作 = " + list1.diff(list2))

        // [1,2,3,4]
        // [3,4,5,6]
        // (1,3),(2,4),(3,5),(4,6)
        // 将两个数据集进行拉链处理
        // 这里的拉链后的每一个数据都是Tuple, 键值对
        //数据集的拉链操作 = List((1,3), (2,4), (3,5), (4,6))
        println("数据集的拉链操作 = " + list1.zip(list2))
        //一个数据集的拉链操作 = List((1,0), (2,1), (3,2), (4,3))
        println("一个数据集的拉链操作 = " + list1.zipWithIndex)

        // 求：集合中每3条数据的和
        val list3 = List(1,2,3,4,5,6,7,8)
        // 1,2,3 = 6
        // 2,3,4 = 9
        // 3,4,5 = 12
        // 4,5,6 = 15
        // 5,6,7 = 18
        // 6,7,8 = 21

        // sliding : 滑动窗口
        // 将集合中指定的数据范围称之为窗口，这个窗口随着计算可以向后滑动
        // sliding方法的第一个参数表示窗口范围，第二个参数表示滑动的步长
        val iterator: Iterator[List[Int]] = list3.sliding(3,3)
        while ( iterator.hasNext ) {
            println(iterator.next())
        }


    }
}
